第1章 並行プログラミングへの第一歩
並行処理のメリット
warning.icon プロセッサを最大限に活用するようにコードを書いた場合のみ
ただしプロセッサが 1 つであっても、I/O 待ち時間を有効に利用すれば、スループットは向上する 応答性の向上
並行処理ではタスクの終了を待つことなくユーザへの応答が可能であるため、応答性が向上する
マルチコアプロセッサかどうかは関係ない
Go での並行処理
Go は並行処理の基本単位をモデル化するために、ゴルーチン と呼ばれる軽量な構造を用いる 軽量であることを踏まえると、Go の基本的な考えは「並列処理は ランタイム と ハードウェア に任せ、プログラマは正しい並行プログラムを書くことに注力するべきである」 この原則に従えば、何かを並行して実行する必要がある場合、資源の割り当てを気にすることなくゴルーチンを作成できる
プログラムは実行されるハードウェアや環境に応じてスケールする
CSP モデルでは、チャネルを用いて通信および同期を行う分離されたゴルーチンを持つため、競合状態 のリスクを減少させることができる https://scrapbox.io/files/67a9c25e65e82dfe0b49a7de.png
しかし、問題によっては古典的な基本操作の方が良い パフォーマンス、結果を得られる場合もある 性能のスケーリング
warning.icon 逐次処理部分が問題の大きさに比例しないことを前提とする